/**
 * 1.哈希表,也叫散列表.(Hash table)
 * 2.哈希表是根据关键码的值而直接进行访问的数据结构。
 * 3.哈希表解决的问题:一般哈希表都是用来快速判断一个元素是否出现集合里。
 * 4.例如要查询一个名字是否在这所学校里。
要枚举的话时间复杂度是O(n)，但如果使用哈希表的话， 只需要O(1)就可以做到。
我们只需要初始化把这所学校里学生的名字都存在哈希表里，
在查询的时候通过索引直接就可以知道这位同学在不在这所学校里了。
将学生姓名映射到哈希表的过程涉及到哈希函数.
index = hashFunction(name);
hashFunction = hashCode(name) % tableSize;
5.哈希碰撞:两个值映射到同一个索引下标: 
解决办法: 
(1) 拉链法:将冲突的元素存储在链表中.
(2) 线性探测法 : 要保证 tableSize > dataSize , 把存在冲突的元素放到下一个位置上.
6.常见三种哈希结构:
(1)数组
(2)set(集合)
(3)映射(map)
7.当我们遇到了要快速判断一个元素是否出现集合里的时候，就要考虑哈希法。
但是哈希法也是牺牲了空间换取了时间，因为我们要使用额外的数组，
set或者是map来存放数据，才能实现快速的查找.
 */